Localization is the process of altering a computer program so it is appropriate for the intended geographic area or user group. For example, a computer program running on a computer system in the United States would typically communicate with a user in English, while the same computer program running on a computer system in France would typically communicate with a user in French. The two different versions of the computer program would be essentially the same except for the natural language employed by the program's user interface. If two different users, one German and one French, desired to use the same computer system, then computer programs running on the system would have to have to be localized for German and French users.
In the past, computer systems accommodated multi-lingual communication by storing different natural language versions of computer programs. Thus, a French user would load a French version of a computer program and a German user would load a German version of a computer program. If a user required that the computer system's operating system communicate in a certain natural language, then the user would initialize (re-boot) the computer system to install the correct natural language version of the operating system. Storing and loading two versions of the same operating system on a computer system is an inefficient use of resources.
Currently, software developers spend a great deal of time localizing a computer program because each message that is output to a user must be translated into the appropriate language. When output messages are stored within the code of a computer program, a developer must have access to the entire program to translate messages. This access requirement is inconvenient because most programs consist of many modules that are linked together to make an executable program.
Software developers use resource files to store output messages rather than storing the messages directly in the program's code. This method eases translation because the messages to be translated are together in one file. To output a message, a program would retrieve the message from the appropriate resource file. Different resource files are used for each natural language. Developers create multiple natural language versions of the program by carrying out the following steps: 1) create a new resource file by translating the messages in an existing resource file into a desired natural language; 2) compile the new resource file; and 3) create an executable file by linking the .compiled program modules with the translated, compiled resource file. Each natural language version of the program requires an executable file that contains all of the compiled program modules and the compiled resource file linked together.
FIG. 1 is a block diagram of sample prior art executable files 101, 102, and 103. Executable file 101 represents a French version of the program Microsoft Excel. EXCEL.OBJ 104 represents all of the compiled program modules that make up-Microsoft Excel. EXLFR.LIB 105 represents a compiled resource file containing all of the messages associated with Microsoft Excel. The executable file 101 consists of the compiled program modules 104 linked with the compiled resource file 105. Executable programs 102 and 103 represent English and German versions, respectively, of Microsoft Excel. Note how the same compiled program modules 104 are present in each of the executable programs 101, 102, and 103. Because the compiled program modules 104 are quite large (approximately 2 megabytes), it is wasteful to require that each natural language version contain the compiled program modules.